[アップデート]Amazon GuardDutyのEC2ランタイム保護でRedHat/CentOS/Fedoraをサポートしました
こんにちは、臼田です。
みなさん、EC2の保護してますか?(挨拶
今回はAmazon GuardDutyのEC2 Runtime Protection機能で新たなサポートOSとしてRedHat,CentOS,Fedoraが追加されたのでこれを検証していきます。
Prerequisites for Amazon EC2 instance support - Amazon GuardDuty
概要
Amazon GuardDutyはAWS上の様々な脅威を検出するサービスです。デフォルトではEC2/IAM/S3に関する基本的な脅威を検出してくれますが、EC2の内部を検査するわけではありません。EC2の脅威検出はその周辺のネットワーク通信から不審なアクティビティを検出します。
EC2内部をチェックせずとも検出できることはメリットですが、一方で内部の詳細な状況を確認することができません。2024年4月にこれを解消する機能としてEC2 Runtime Monitoringがリリースされました。
これにより、EC2の内部にエージェントを自動でセットアップし、詳細な脅威の情報を取得することができるようになりました。
例えば、不正はアクティビティを実行したユーザーやプロセスを特定することが可能になりました。
これまで、何度か更新がありEC2 Runtime MonitoringがサポートしていたOSは以下でした。
- Amazon Linux 2
- Amazon Linux 2023
- Ubuntu 20.04
- Ubuntu 22.04
- Debian 11
- Debian 12
今回、これに加えて以下が追加されました。
- RedHat 9.4
- Fedora 34.0
- CentOS 9.0
詳細な要件はPrerequisites for Amazon EC2 instance support - Amazon GuardDutyを確認してください。
なお、今回のアップデートはDocument history for Amazon GuardDuty - Amazon GuardDutyに出てきています。
以下のような通知内容です。
Updated functionality in Runtime Monitoring - Amazon EC2
Runtime Monitoring released a new agent version 1.5.0 for Amazon EC2 resources. With this new agent version, GuardDuty extends Runtime Monitoring support for Amazon EC2 resources that run on RedHat, CentOS, and Fedora. For more information, see Validating architectural requirements. For information about release notes, see GuardDuty security agent for Amazon EC2 resources.
なお、これに合わせてAmazon EKSでも同様のアップデートがあります。
やってみた
それでは実際に試してみましょう。今回はRed Hat Enterprise Linuxでの検出を以下の手順で実行していきます。
- EC2を作成する
- SSMエージェントを導入する
- GuardDutyエージェントの自動セットアップを待つ
- 不審なアクティビティの実行
大きな手順はこちらのユーザーガイドにあります。なお、今回はGuardDuty側のセットアップがされている想定で進めます。
EC2を作成する
まずはRed Hat Enterprise Linuxのインスタンスを作成します。GuardDutyエージェントがサポートしているのは9.4なので、9を選択します。
他の設定は適当で大丈夫ですが、SSMを利用するためのIAM Roleをアタッチするか、DHMCを設定しておきましょう。
SSMエージェントを導入する
GuardDutyエージェントの自動セットアップのためにSSMエージェントが必要になりますが、デフォルトでRHELではSSMエージェントがプリインストールされていません。
RHEL 8.x および 9.x を SSM Agent にインストール - AWS Systems Managerの手順でセットアップします。
[ec2-user@ip-172-31-15-199 ~]$ cat /etc/os-release
NAME="Red Hat Enterprise Linux"
VERSION="9.4 (Plow)"
ID="rhel"
ID_LIKE="fedora"
VERSION_ID="9.4"
PLATFORM_ID="platform:el9"
PRETTY_NAME="Red Hat Enterprise Linux 9.4 (Plow)"
ANSI_COLOR="0;31"
LOGO="fedora-logo-icon"
CPE_NAME="cpe:/o:redhat:enterprise_linux:9::baseos"
HOME_URL="https://www.redhat.com/"
DOCUMENTATION_URL="https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9"
BUG_REPORT_URL="https://bugzilla.redhat.com/"
REDHAT_BUGZILLA_PRODUCT="Red Hat Enterprise Linux 9"
REDHAT_BUGZILLA_PRODUCT_VERSION=9.4
REDHAT_SUPPORT_PRODUCT="Red Hat Enterprise Linux"
REDHAT_SUPPORT_PRODUCT_VERSION="9.4"
[ec2-user@ip-172-31-15-199 ~]$ sudo dnf install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered with an entitlement server. You can use "rhc" or "subscription-manager" to register.
Red Hat Enterprise Linux 9 for x86_64 - AppStream from RHUI (RPMs) 47 MB/s | 46 MB 00:00
Red Hat Enterprise Linux 9 for x86_64 - BaseOS from RHUI (RPMs) 45 MB/s | 38 MB 00:00
Red Hat Enterprise Linux 9 Client Configuration 27 kB/s | 3.0 kB 00:00
amazon-ssm-agent.rpm 3.5 MB/s | 24 MB 00:06
Dependencies resolved.
====================================================================================================
Package Architecture Version Repository Size
====================================================================================================
Installing:
amazon-ssm-agent x86_64 3.3.1345.0-1 @commandline 24 M
Transaction Summary
====================================================================================================
Install 1 Package
Total size: 24 M
Installed size: 122 M
Downloading Packages:
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Running scriptlet: amazon-ssm-agent-3.3.1345.0-1.x86_64 1/1
Preparing : 1/1
Running scriptlet: amazon-ssm-agent-3.3.1345.0-1.x86_64 1/1
Installing : amazon-ssm-agent-3.3.1345.0-1.x86_64 1/1
Running scriptlet: amazon-ssm-agent-3.3.1345.0-1.x86_64 1/1
Created symlink /etc/systemd/system/multi-user.target.wants/amazon-ssm-agent.service → /etc/systemd/system/amazon-ssm-agent.service.
Verifying : amazon-ssm-agent-3.3.1345.0-1.x86_64 1/1
Installed products updated.
Installed:
amazon-ssm-agent-3.3.1345.0-1.x86_64
Complete!
[ec2-user@ip-172-31-15-199 ~]$ sudo systemctl status amazon-ssm-agent --no-pager
● amazon-ssm-agent.service - amazon-ssm-agent
Loaded: loaded (/etc/systemd/system/amazon-ssm-agent.service; enabled; preset: disabled)
Active: active (running) since Wed 2024-11-27 06:49:10 UTC; 4s ago
Main PID: 4036 (amazon-ssm-agen)
Tasks: 15 (limit: 4400)
Memory: 36.7M
CPU: 205ms
CGroup: /system.slice/amazon-ssm-agent.service
├─4036 /usr/bin/amazon-ssm-agent
└─4102 /usr/bin/ssm-agent-worker
GuardDutyエージェントの自動セットアップを待つ
環境が適切に整っていれば、しばらくするとエージェントがセットアップされます。内部的にはSSMステートマネージャーにより実行されます。
インスタンス上では以下のコマンドで確認できます。
[ec2-user@ip-172-31-15-199 ~]$ sudo systemctl status amazon-guardduty-agent
● amazon-guardduty-agent.service - Amazon GuardDuty Agent
Loaded: loaded (/usr/lib/systemd/system/amazon-guardduty-agent.service; enabled; preset: disab>
Active: active (running) since Wed 2024-11-27 06:49:28 UTC; 5min ago
Main PID: 4256 (amazon-guarddut)
Tasks: 16 (limit: 4400)
Memory: 79.4M (max: 128.0M available: 48.5M)
CPU: 3.092s
CGroup: /system.slice/amazon-guardduty-agent.service
└─4256 /opt/aws/amazon-guardduty-agent/bin/amazon-guardduty-agent --worker-threads 8
無事セットアップされてしばらくすると、GuardDutyのマネジメントコンソールでもステータスを確認できます。
不審なアクティビティの実行
セットアップできたので不審なアクティビティを実行します。今回はコインマイナーを動かしてみます。実行した内容自体の詳細は割愛します。
しばらくすると無事検出されました。
検出は全部で6つとなり内訳は以下のとおりです。
- 通常の検出
- CryptoCurrency:EC2/BitcoinTool.B
- CryptoCurrency:EC2/BitcoinTool.B!DNS
- Runtime Monitorinによる検出
- CryptoCurrency:Runtime/BitcoinTool.B
- CryptoCurrency:Runtime/BitcoinTool.B!DNS
- Impact:Runtime/CryptoMinerExecuted
- Malware Protectionによる検出
- Execution:EC2/MaliciousFile
Impact:Runtime/CryptoMinerExecutedを見てみましょう。実際に実行されたコインマイナーのプログラムであるxmrigのプロセスレベルの情報が出ています。ちゃんとRuntimeでの検出が動いていますね。
ついでにマルウェアスキャンによって検出されたExecution:EC2/MaliciousFileも見ておきましょう。実行されたファイル以外にも、それを取得した際に生成された圧縮されたファイルも一緒に検出してくれています。頼もしいですね。
まとめ
Amazon GuardDutyのRuntime ProtectionでRedHat/CentOS/Fedoraがサポートされたので、実際にRHELを利用して検出動作を確認しました。
自動セットアップを有効にしておくことでほぼ透過的にRuntimeの機能まで利用できるのはよいですね!ぜひ使っていきましょう!